package cn.iocoder.yudao.module.system.service.erp.warehouseinventory;
import java.util.*;

import cn.iocoder.yudao.module.system.controller.admin.erp.warehouseinventory.vo.WarehouseInventoryPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.erp.warehouseinventory.vo.WarehouseInventorySaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.erp.warehouseinventory.WarehouseInventoryDO;
import jakarta.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 仓库库存 Service 接口
 *
 * @author 芋道源码
 */
public interface WarehouseInventoryService {

    /**
     * 创建仓库库存
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWarehouseInventory(@Valid WarehouseInventorySaveReqVO createReqVO);

    /**
     * 更新仓库库存
     *
     * @param updateReqVO 更新信息
     */
    void updateWarehouseInventory(@Valid WarehouseInventorySaveReqVO updateReqVO);

    /**
     * 删除仓库库存
     *
     * @param id 编号
     */
    void deleteWarehouseInventory(Long id);

    /**
     * 获得仓库库存
     *
     * @param id 编号
     * @return 仓库库存
     */
    WarehouseInventoryDO getWarehouseInventory(Long id);

    /**
     * 获得仓库库存分页
     *
     * @param pageReqVO 分页查询
     * @return 仓库库存分页
     */
    PageResult<WarehouseInventoryDO> getWarehouseInventoryPage(WarehouseInventoryPageReqVO pageReqVO);
    /**
     * 获得仓库库存
     *
     * @param warehouseId 仓库id
     * @param customerId 客户id
     * @return 仓库库存
     */
    WarehouseInventoryDO getWarehouseInventory(Long warehouseId,Long customerId);
    /**
     * 获得创建仓库库存
     *
     * @param warehouseId 仓库id
     * @param customerId 客户id
     * @return 仓库库存
     */
    WarehouseInventoryDO getOrCrateWarehouseInventory(Long warehouseId,Long customerId);

}